{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Python基础"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Python语言基础"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.1. 建议使用jupyter notebook\n",
    "优点2：交互式展现所有结果："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello world!\n",
      "78\n"
     ]
    }
   ],
   "source": [
    "print(\"hello world!\")\n",
    "\n",
    "\n",
    "a=78\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2. Python条件与循环语句\n",
    "![条件与循环语句要点归纳：](条件与循环要点归纳.webp \"optional title\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.3. Python数据类型\n",
    "![条件与循环语句要点归纳：](数据类型.webp \"optional title\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.3. Python中的list"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Python内置的一种数据类型是列表：list。list是一种有序的集合，可以随时添加和删除其中的元素。\n",
    "\n",
    "比如，列出班里所有同学的名字，就可以用一个list表示：\n",
    "```python\n",
    "['Michael', 'Bob', 'Tracy']\n",
    "```\n",
    "\n",
    "list是数学意义上的有序集合，也就是说，**list中的元素是按照顺序排列的**。\n",
    "\n",
    "构造list非常简单，直接用 [ ] 把list的所有元素都括起来，就是一个list对象。通常，我们会把list赋值给一个变量，这样，就可以通过变量来引用list：\n",
    "```python\n",
    "classmates = ['Michael', 'Bob', 'Tracy']\n",
    "```\n",
    "\n",
    "**获取list长度**："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lichao\n",
      "yangjiao\n",
      "wangyalu\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\"\\nclassmates[0] = 'guojiansheng'\\nlen(classmates)\\nprint(classmates)\\n\""
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1 = \"lichao\"\n",
    "a2 = \"sjds\"\n",
    "classmates = ('lichao','yangjiao','wangyalu','huang')\n",
    "print(classmates[0])\n",
    "print(classmates[1])\n",
    "print(classmates[2])\n",
    "\n",
    "#classmates[0] = 'guojiansheng'\n",
    "\n",
    "'''\n",
    "classmates[0] = 'guojiansheng'\n",
    "len(classmates)\n",
    "print(classmates)\n",
    "'''    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**list的切片方法**："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['E', 'F']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#classmates\n",
    "\n",
    "l = ['A', 'B', 'C', 'D', 'E', 'F', 'G']\n",
    "#    0     1    2    3    4    5    6\n",
    "l[0:3]\n",
    "l[2:4]\n",
    "l[-3:-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**往list追加元素**："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['A', 'B', 'C', 'D', 'E', 'F', 'G', 'Peter']\n"
     ]
    }
   ],
   "source": [
    "l.append('Peter')\n",
    "print(l)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "也可以往list的指定位置加入元素，所使用的函数是**insert函数**，语法如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['A', 'B', 'C', 'D', 'E', 'eee', 'F', 'G', 'Peter']\n"
     ]
    }
   ],
   "source": [
    "l.insert(5, 'eee')\n",
    "print(l)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**删除list里面的元素**：\n",
    "\n",
    "要删除list**末尾**的元素，用pop()方法： ```list_name.pop()```。\n",
    "\n",
    "如果要删除指定位置的元素，用pop(i)方法，其中i是索引位置："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'C'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "l.pop(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**range函数**：\n",
    "\n",
    "返回的就是list，```range(stop)```，或者 ```range(start=0,stop[,step=1])```。\n",
    "\n",
    "默认的起始值start是0，结束是stop（不包含），步长step值是1，例如：```list1 = range(10)```，生成一个0-9的序列。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**list其他用法：**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "First : 1\n",
      "Second: 2\n",
      "和是 : 3.0\n"
     ]
    }
   ],
   "source": [
    "a = float(input(\"First : \"))\n",
    "b = float(input(\"Second: \"))\n",
    "sum = a+b\n",
    "print(\"和是 : \"+ str(sum))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "做一个小测试"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![jupyter](./测试1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 第三方模块与包的使用"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![条件与循环语句要点归纳：](模块与包.webp \"optional title\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1. NumPy库操作\n",
    "\n",
    "NumPy是Python中科学计算的基础包。它是一个Python库，提供多维数组对象，各种派生对象（如掩码数组和矩阵），以及用于数组快速操作的各种例程，包括数学，逻辑，形状操作，排序，选择，I / O离散傅立叶变换，基本线性代数，基本统计运算，随机模拟等等。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**一个NumPy操作实例：**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, (2, 4), 8, dtype('int32'))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "a=np.array([[1,3,5,7],[2,4,6,8]])\n",
    "a\n",
    "a.ndim, a.shape, a.size, a.dtype"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通过list创建矩阵：**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 2, 3]\n",
      "[1 2 3]\n",
      "<class 'list'>\n",
      "<class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "import numpy as np \n",
    " \n",
    "x =  [1,2,3] \n",
    "a = np.asarray(x)  \n",
    "print(x)\n",
    "print(a)\n",
    "print(type(x))\n",
    "print(type(a))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通过```arange```函数创建矩阵**："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 1 2 3 4 5 6 7 8 9]\n",
      "[5 6 7 8 9]\n",
      "[ 5  7  9 11 13 15 17 19]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "a = np.arange(10) # 默认从0开始到10（不包括10），步长为1\n",
    "print(a) # 返回 [0 1 2 3 4 5 6 7 8 9]\n",
    "\n",
    "a1 = np.arange(5,10) # 从5开始到10（不包括10），步长为1\n",
    "print(a1) # 返回 [5 6 7 8 9]\n",
    "\n",
    "a2 = np.arange(5,20,2) # 从5开始到20（不包括20），步长为2\n",
    "print(a2) # 返回 [ 5  7  9 11 13 15 17 19]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通过```linspace```创建矩阵**：\n",
    "\n",
    "linspace()和matlab的linspace很类似，用于创建指定数量等间隔的序列，实际生成一个等差数列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.   2.5  5.   7.5 10. ]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    " \n",
    "a = np.linspace(0,10,5) # 生成首位是0，末位是10，含5个数的等差数列\n",
    "print(a) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**```ones,zeros,eye,empty```**函数创建矩阵：\n",
    "\n",
    "```ones```创建全1矩阵 \n",
    "\n",
    "```zeros```创建全0矩阵 \n",
    "\n",
    "```eye```创建单位矩阵 \n",
    "\n",
    "```empty```创建空矩阵（实际有值）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1. 1. 1. 1.]\n",
      " [1. 1. 1. 1.]\n",
      " [1. 1. 1. 1.]]\n",
      "[[0. 0. 0. 0.]\n",
      " [0. 0. 0. 0.]\n",
      " [0. 0. 0. 0.]]\n",
      "[[1. 0. 0.]\n",
      " [0. 1. 0.]\n",
      " [0. 0. 1.]]\n",
      "[[0. 0. 0. 0.]\n",
      " [0. 0. 0. 0.]\n",
      " [0. 0. 0. 0.]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "a_ones = np.ones((3,4)) # 创建3*4的全1矩阵\n",
    "print(a_ones)\n",
    "# 结果\n",
    "#[[ 1.  1.  1.  1.]\n",
    "# [ 1.  1.  1.  1.]\n",
    "# [ 1.  1.  1.  1.]]\n",
    "\n",
    "a_zeros = np.zeros((3,4)) # 创建3*4的全0矩阵\n",
    "print(a_zeros)\n",
    "# 结果\n",
    "#[[ 0.  0.  0.  0.]\n",
    "# [ 0.  0.  0.  0.]\n",
    "# [ 0.  0.  0.  0.]]\n",
    "\n",
    "a_eye = np.eye(3) # 创建3阶单位矩阵\n",
    "print(a_eye)\n",
    "# 结果\n",
    "#[ 1.  0.  0.]\n",
    "# [ 0.  1.  0.]\n",
    "# [ 0.  0.  1.]]\n",
    "\n",
    "a_empty = np.empty((3,4)) # 创建3*4的空矩阵\n",
    "print(a_empty)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**矩阵的最大值和最小值**：\n",
    "\n",
    "获得矩阵中元素最大最小值的函数分别是```max```和```min```，可以获得整个矩阵、行或列的最大最小值。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11\n",
      "1\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "array=np.array([[1,2,11],\n",
    "                [4,5,8]])\n",
    "\n",
    "print(array.max())#结果为6\n",
    "print(array.min())#结果为1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "同时还可以指定```axis```关键字，获取行或列的最大、最小值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 4  5 11]\n"
     ]
    }
   ],
   "source": [
    "print(array.max(axis=0)) #x轴最大值，0,1分别代表行列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**平均值**：\n",
    "\n",
    "获得矩阵中元素的平均值可以通过函数```mean()```或```average()```。同样地，可以获得整个矩阵、行或列的平均值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.5\n",
      "3.5\n",
      "[2.5 3.5 4.5]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "array=np.array([[1,2,3],\n",
    "                [4,5,6]])\n",
    "\n",
    "# 求矩阵平均值可以如下两个方法：\n",
    "print(array.mean())#结果为3.5\n",
    "print(np.average(array))#结果为3.5\n",
    "\n",
    "print(array.mean(axis=0))#行方向的平均值，同样，0,1代表维度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2. Pandas常用操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pandas 是 Python 的核心数据分析支持库，提供了快速、灵活、明确的数据结构，旨在简单、直观地处理关系型、标记型数据。\n",
    "\n",
    "Pandas 适用于处理以下类型的数据：  \n",
    "* 与SQL或Excel表类似的，含异构列的表格数据;  \n",
    "* 有序和无序（非固定频率）的时间序列数据;  \n",
    "* 带行列标签的矩阵数据，包括同构或异构型数据;  \n",
    "* 任意其它形式的观测、统计数据集, 数据转入 Pandas 数据结构时不必事先标记。\n",
    "\n",
    "**pandas基本数据结构**：\n",
    "\n",
    "目前，pandas的基本数据结构有3种，Series,DataFrame和Pandel。\n",
    "\n",
    "要想熟练使用Pandas,这三种数据结构一定要牢记于心。\n",
    "\n",
    "其中DataFrame使用频率最高。\n",
    "\n",
    "<table><tr><th style=\"text-align:center;\">数据结构</th><th  style=\"text-align:center;\">维度</th><th style=\"text-align:center;\">轴标签</th></tr><tbody><tr><td  style=\"text-align:center;\">Series</td><td  style=\"text-align:center;\">一维</td><td  style=\"text-align:center;\">index(唯一的行)</td></tr><tr><td style=\"text-align:center;\">DataFrame</td><td  style=\"text-align:center;\">二维</td><td style=\"text-align:center;\">index(行)和columns(列)</td></tr><tr><td>Pandel</td><td>三维</td><td>items major_axis和minor_axis</td></tr></tbody></table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Pandas读取csv文件**：\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>XH</th>\n",
       "      <th>CJTS</th>\n",
       "      <th>YT</th>\n",
       "      <th>CJMJ</th>\n",
       "      <th>YF</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>137</td>\n",
       "      <td>781</td>\n",
       "      <td>商业</td>\n",
       "      <td>44025.50</td>\n",
       "      <td>2018-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>138</td>\n",
       "      <td>21</td>\n",
       "      <td>商业</td>\n",
       "      <td>2544.92</td>\n",
       "      <td>2018-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>139</td>\n",
       "      <td>107</td>\n",
       "      <td>商业</td>\n",
       "      <td>6010.65</td>\n",
       "      <td>2018-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>140</td>\n",
       "      <td>140</td>\n",
       "      <td>商业</td>\n",
       "      <td>4620.47</td>\n",
       "      <td>2018-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>141</td>\n",
       "      <td>153</td>\n",
       "      <td>商业</td>\n",
       "      <td>11307.79</td>\n",
       "      <td>2018-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1275</th>\n",
       "      <td>1412</td>\n",
       "      <td>39</td>\n",
       "      <td>办公</td>\n",
       "      <td>4718.81</td>\n",
       "      <td>2021-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1276</th>\n",
       "      <td>1413</td>\n",
       "      <td>17</td>\n",
       "      <td>办公</td>\n",
       "      <td>1861.13</td>\n",
       "      <td>2021-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1277</th>\n",
       "      <td>1414</td>\n",
       "      <td>16</td>\n",
       "      <td>办公</td>\n",
       "      <td>931.69</td>\n",
       "      <td>2021-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1278</th>\n",
       "      <td>1415</td>\n",
       "      <td>9</td>\n",
       "      <td>办公</td>\n",
       "      <td>1211.23</td>\n",
       "      <td>2021-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1279</th>\n",
       "      <td>1416</td>\n",
       "      <td>108</td>\n",
       "      <td>办公</td>\n",
       "      <td>10136.14</td>\n",
       "      <td>2021-11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1280 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        XH  CJTS  YT      CJMJ       YF\n",
       "0      137   781  商业  44025.50  2018-01\n",
       "1      138    21  商业   2544.92  2018-01\n",
       "2      139   107  商业   6010.65  2018-01\n",
       "3      140   140  商业   4620.47  2018-01\n",
       "4      141   153  商业  11307.79  2018-01\n",
       "...    ...   ...  ..       ...      ...\n",
       "1275  1412    39  办公   4718.81  2021-11\n",
       "1276  1413    17  办公   1861.13  2021-11\n",
       "1277  1414    16  办公    931.69  2021-11\n",
       "1278  1415     9  办公   1211.23  2021-11\n",
       "1279  1416   108  办公  10136.14  2021-11\n",
       "\n",
       "[1280 rows x 5 columns]"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv(\"/Users/bruce/Downloads/二手房成交信息统计.csv\")\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**查看dataframe的信息**:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1280 entries, 0 to 1279\n",
      "Data columns (total 5 columns):\n",
      " #   Column  Non-Null Count  Dtype  \n",
      "---  ------  --------------  -----  \n",
      " 0   XH      1280 non-null   int64  \n",
      " 1   CJTS    1280 non-null   int64  \n",
      " 2   YT      1280 non-null   object \n",
      " 3   CJMJ    1280 non-null   float64\n",
      " 4   YF      1280 non-null   object \n",
      "dtypes: float64(1), int64(2), object(2)\n",
      "memory usage: 50.1+ KB\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>XH</th>\n",
       "      <th>CJTS</th>\n",
       "      <th>CJMJ</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1280.000000</td>\n",
       "      <td>1280.000000</td>\n",
       "      <td>1.280000e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>776.500000</td>\n",
       "      <td>474.103125</td>\n",
       "      <td>4.050702e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>369.648482</td>\n",
       "      <td>1268.701366</td>\n",
       "      <td>1.071932e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>137.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>4.200000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>456.750000</td>\n",
       "      <td>17.000000</td>\n",
       "      <td>1.552755e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>776.500000</td>\n",
       "      <td>53.000000</td>\n",
       "      <td>4.436680e+03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1096.250000</td>\n",
       "      <td>273.000000</td>\n",
       "      <td>2.335679e+04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1416.000000</td>\n",
       "      <td>13407.000000</td>\n",
       "      <td>1.147526e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                XH          CJTS          CJMJ\n",
       "count  1280.000000   1280.000000  1.280000e+03\n",
       "mean    776.500000    474.103125  4.050702e+04\n",
       "std     369.648482   1268.701366  1.071932e+05\n",
       "min     137.000000      1.000000  4.200000e+01\n",
       "25%     456.750000     17.000000  1.552755e+03\n",
       "50%     776.500000     53.000000  4.436680e+03\n",
       "75%    1096.250000    273.000000  2.335679e+04\n",
       "max    1416.000000  13407.000000  1.147526e+06"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.info()        # 数据类型，内存消耗等信息\n",
    "df.describe()    # 统计特征，均值方差等"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**排序操作**：\n",
    "\n",
    "对数据进行排序，用到了```sort_values```，```by```参数可以指定根据哪一列数据进行排序，```ascending```是设置升序和降序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>XH</th>\n",
       "      <th>CJTS</th>\n",
       "      <th>YT</th>\n",
       "      <th>CJMJ</th>\n",
       "      <th>YF</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>675</th>\n",
       "      <td>812</td>\n",
       "      <td>1</td>\n",
       "      <td>办公</td>\n",
       "      <td>61.37</td>\n",
       "      <td>2020-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>747</th>\n",
       "      <td>884</td>\n",
       "      <td>1</td>\n",
       "      <td>其他</td>\n",
       "      <td>63.42</td>\n",
       "      <td>2020-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1194</th>\n",
       "      <td>1331</td>\n",
       "      <td>1</td>\n",
       "      <td>办公</td>\n",
       "      <td>51.21</td>\n",
       "      <td>2021-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1187</th>\n",
       "      <td>1324</td>\n",
       "      <td>1</td>\n",
       "      <td>其他</td>\n",
       "      <td>178.85</td>\n",
       "      <td>2021-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>211</td>\n",
       "      <td>1</td>\n",
       "      <td>办公</td>\n",
       "      <td>232.23</td>\n",
       "      <td>2018-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1103</th>\n",
       "      <td>1240</td>\n",
       "      <td>8820</td>\n",
       "      <td>住宅</td>\n",
       "      <td>781110.45</td>\n",
       "      <td>2020-09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>639</th>\n",
       "      <td>776</td>\n",
       "      <td>9959</td>\n",
       "      <td>住宅</td>\n",
       "      <td>829203.30</td>\n",
       "      <td>2019-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>797</th>\n",
       "      <td>934</td>\n",
       "      <td>10594</td>\n",
       "      <td>住宅</td>\n",
       "      <td>905670.66</td>\n",
       "      <td>2020-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>852</th>\n",
       "      <td>989</td>\n",
       "      <td>11322</td>\n",
       "      <td>住宅</td>\n",
       "      <td>975007.33</td>\n",
       "      <td>2020-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>829</th>\n",
       "      <td>966</td>\n",
       "      <td>13407</td>\n",
       "      <td>住宅</td>\n",
       "      <td>1147525.70</td>\n",
       "      <td>2020-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1280 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        XH   CJTS  YT        CJMJ       YF\n",
       "675    812      1  办公       61.37  2020-01\n",
       "747    884      1  其他       63.42  2020-04\n",
       "1194  1331      1  办公       51.21  2021-08\n",
       "1187  1324      1  其他      178.85  2021-08\n",
       "74     211      1  办公      232.23  2018-03\n",
       "...    ...    ...  ..         ...      ...\n",
       "1103  1240   8820  住宅   781110.45  2020-09\n",
       "639    776   9959  住宅   829203.30  2019-12\n",
       "797    934  10594  住宅   905670.66  2020-06\n",
       "852    989  11322  住宅   975007.33  2020-08\n",
       "829    966  13407  住宅  1147525.70  2020-07\n",
       "\n",
       "[1280 rows x 5 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by = 'CJTS', ascending = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**选取特定的行、列**:\n",
    "\n",
    "使用```loc```函数。\n",
    "\n",
    "用```loc```函数的第一个参数代表行，第二个参数代表列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CJTS</th>\n",
       "      <th>YT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>781</td>\n",
       "      <td>商业</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>21</td>\n",
       "      <td>商业</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>107</td>\n",
       "      <td>商业</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>140</td>\n",
       "      <td>商业</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>153</td>\n",
       "      <td>商业</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1275</th>\n",
       "      <td>39</td>\n",
       "      <td>办公</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1276</th>\n",
       "      <td>17</td>\n",
       "      <td>办公</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1277</th>\n",
       "      <td>16</td>\n",
       "      <td>办公</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1278</th>\n",
       "      <td>9</td>\n",
       "      <td>办公</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1279</th>\n",
       "      <td>108</td>\n",
       "      <td>办公</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1280 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      CJTS  YT\n",
       "0      781  商业\n",
       "1       21  商业\n",
       "2      107  商业\n",
       "3      140  商业\n",
       "4      153  商业\n",
       "...    ...  ..\n",
       "1275    39  办公\n",
       "1276    17  办公\n",
       "1277    16  办公\n",
       "1278     9  办公\n",
       "1279   108  办公\n",
       "\n",
       "[1280 rows x 2 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[:]        # 选取整个表格，想想为什么？\n",
    "df.loc[:2]       # 选取了前三行，想想和list的索引有何区别？\n",
    "df.loc[:, 'CJTS']# 选取‘name'列所有的数据\n",
    "df.loc[:, 'CJTS':'YT'] # 是否选取了name和gender两列数据？\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下这条语句：\n",
    "\n",
    "```python\n",
    "df.loc[:, 'name':'gender'] \n",
    "```\n",
    "是选取了从'name'到’gender‘的所有列，而不是只选择了'name'和’gender‘。\n",
    "\n",
    "如何解决```loc```只能连续选取的问题？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'2020-09', '2020-06', '2021-07', '2020-03', '2019-08', '2021-05', '2019-11', '2018-07', '2020-11', '2021-03', '2021-02', '2018-03', '2020-12', '2019-04', '2019-09', '2020-05', '2020-08', '2018-12', '2020-01', '2018-02', '2018-06', '2021-09', '2018-08', '2018-05', '2021-11', '2018-11', '2019-12', '2019-02', '2020-02', '2021-04', '2019-06', '2021-08', '2020-07', '2018-04', '2021-01', '2019-03', '2019-01', '2020-10', '2020-04', '2018-09', '2019-05', '2018-01', '2018-10', '2021-06', '2019-07', '2021-10', '2019-10'}\n",
      "['2018-01', '2018-02', '2018-03', '2018-04', '2018-05', '2018-06', '2018-07', '2018-08', '2018-09', '2018-10', '2018-11', '2018-12', '2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06', '2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12', '2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08', '2020-09', '2020-10', '2020-11', '2020-12', '2021-01', '2021-02', '2021-03', '2021-04', '2021-05', '2021-06', '2021-07', '2021-08', '2021-09', '2021-10', '2021-11']\n"
     ]
    }
   ],
   "source": [
    "#pd.DataFrame(df, columns=['CJTS', 'YF'])\n",
    "arr = set(df['YF'])\n",
    "a = np.unique(df['YF'])\n",
    "print(arr)\n",
    "print(a.tolist())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**pandas总结**：\n",
    "* pandas相当于使用Python操作Excel\n",
    "* 所有Excel的操作都可以在pandas中找到对应操作\n",
    "* 一次课程无法全部讲解，还需同学们自行学习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 数据可视化操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1. matplotlib库\n",
    "\n",
    "matplotlib是python中常用的图表绘制工具。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**绘制简单折线图**：\n",
    "\n",
    "可以直接使用```plt.plot```函数。\n",
    "\n",
    "其中，第一个参数是横轴对应数据，第二个参数是纵轴对应数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'set'>\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x11c5a8430>]"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "df_sort = df.sort_values(by = 'CJTS', ascending = True)\n",
    "#plt.plot(range(2015,2020,1), [11.06, 11.23, 12.31, 13.89, 14.28])\n",
    "set1 = set(df_sort['YF'])\n",
    "print(type(set1))\n",
    "\n",
    "plt.plot(df['YF'] , df_sort['CJTS'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "猜一猜：这是什么数据？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fd6f8e875b0>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"GDP of China from 2015 to 2019\")\n",
    "plt.plot(range(2015,2020,1), [11.06, 11.23, 12.31, 13.89, 14.28])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用之前的学生信息表，寻找年龄与成绩的关系："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(df['age'], df['grade'])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为什么是杂乱无章的线段？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      name  age  grade gender  height\n",
      "6   Alfred    1    1.0      M     0.3\n",
      "3   Carson    2    4.0      M     0.6\n",
      "0     Lisa    9    2.0      M     1.1\n",
      "5    Lucas   20    1.1      M     1.7\n",
      "7   Howard   22    5.0      M     2.0\n",
      "2    Ursus   29    3.3      M     1.6\n",
      "4  Dickens   33    5.0      F     1.9\n",
      "1      Ken   80    3.0      F     1.7\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_age_ascend = df.sort_values(by = 'age', ascending = True)   # 先新建一个表格，这个表格按照年龄升序排列\n",
    "print(df_age_ascend)\n",
    "plt.plot(df_age_ascend['age'], df_age_ascend['grade'])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
